我可以在一张表中为供应商“s0001、s0002”创建一个主键(例如“c0001,c0002”)吗?
-
数据库设计的思想是保持每个数据元素独立。每个元素都有自己的数据类型、约束和规则。那c0002
不是一个字段,而是两个字段。与相同XXXnnn
管他呢。这是不正确的,它将严重限制您使用数据、使用数据库功能和设施的能力。
将其分解为两个离散的数据项:
column_1 CHAR(1)
column_2 INTEGER
然后将自动增量设置为column_2
是的,您的主键可以是(column_1, column_2)
,所以你并没有失去任何意义c0002
有给你的。
-
切勿将供应商和客户(无论“c”和“s”含义如何)放在同一个表中。如果这样做,您将不会拥有数据库表,而是拥有平面文件。以及随之而来的各种问题和限制。
这意味着,标准化数据。你最终会得到:
- 一张桌子
Person
or Organisation
包含公共数据(Name, Address
...)
- 一张桌子
Customer
包含客户特定数据(CreditLimit
...)
- 一张桌子
Supplier
包含供应商特定数据(PaymentTerms
...)
- 没有不明确或可选的列,因此没有空值
- 对使用或 SQL 函数没有限制
.
当您需要添加列时,您只需在需要的地方添加列,而不会影响平面文件的所有其他功能。影响范围仅限于变更范围。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)