【问题标题】:New to ERD's and Database mgmtERD 和数据库管理的新手
【发布时间】:2011-01-31 01:41:57
【问题描述】:

我在介绍数据库课程中有一个作业到期 - 我被一件事难住了。我们已经为酒店创建了 5 个表 - Bookings、Clients、OtherCharges、Pays 和 Rooms。在 Clients 表中,我们具有以下属性 - ClientID(PK)、FirstName(必需)、LastName(必需)、Birthdate、Street、City、Province、PostalCode、Phone(需要电话或电子邮件)、Email(电话或电子邮件是必需的),信用卡(必须不包含重复)。我已经在 Visio 中构建了我的 ERD(按照说明),并在我的 SQL 工作表中完成了所有的 TABLE CREATE。我的问题是双重的: A) 如何在 Visio 中表示电子邮件/电话要求?必需属性有一个复选框,但我不能同时检查它们,因为它们不是都必需的。是什么赋予了? B)我如何在我的 SQL 中处理它?是 CHECK 约束吗?

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: sql database erd


    【解决方案1】:

    如果您使用的是标准 Visio“数据库模型图”,则不能直接表示多列检查约束。对于第二个问题,是的,这是一个 CHECK 约束。

    【讨论】:

    • 你会如何描述这个约束?是 CHECK email = NOT NULL 还是 phone= NOT NULL?
    • 确切的系统税可能取决于数据库,在 SQL Server 上,它将是 CHECK(电子邮件不为空或电话不为空)
    【解决方案2】:

    只需在数据库级别对电话和电子邮件使用 varchar。如果您想强制执行更复杂的验证,最好在应用程序级别实现。

    【讨论】:

    • 抱歉看起来很简单,但是数据类型(CHAR、VARCHAR 等)与强制执行限制有什么关系?我认为讲师希望将其中一个(电子邮件或电话)作为必填字段(非空)进行某种区分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    相关资源
    最近更新 更多