我可以在一张表中创建主键,例如“ c0001,c0002”和供应商“ s0001,s0002”吗?

最佳答案

数据库设计中的想法是使每个数据元素保持独立。每个元素都有其自己的数据类型,约束和规则。 c0002不是一个字段,而是两个。与XXXnnn相同。这是不正确的,它将严重限制您使用数据以及使用数据库功能的便利。

将其分为两个离散的数据项:
column_1 CHAR(1)
column_2 INTEGER


然后在column_2上设置AUTOINCREMENT

是的,您的主键可以是(column_1, column_2),因此您不会丢失c0002对您的意义。
切勿将供应商和客户(无论“ c”和“ s”是什么意思)放在同一张表中。如果这样做,将没有数据库表,而将有一个平面文件。随之而来的是各种问题和局限性。

就是说,规范化数据。您最终将得到:


PersonOrganisation的一张表包含公共数据(Name, Address ...)
Customer的一张表包含客户特定数据(CreditLimit ...)
一个Supplier表,其中包含供应商特定的数据(PaymentTerms ...)
没有歧义或可选的列,因此没有Null
使用或SQL函数无限制



而且,当您需要添加列时,只需在需要的地方进行操作,而不会影响平面文件的所有其他起诉。影响范围仅限于变更范围。

08-19 22:02