我可以在一张表中创建主键,例如“ c0001,c0002”和供应商“ s0001,s0002”吗?
最佳答案
数据库设计中的想法是使每个数据元素保持独立。每个元素都有其自己的数据类型,约束和规则。 c0002
不是一个字段,而是两个。与XXXnnn
相同。这是不正确的,它将严重限制您使用数据以及使用数据库功能的便利。
将其分为两个离散的数据项:column_1 CHAR(1)
column_2 INTEGER
然后在column_2
上设置AUTOINCREMENT
是的,您的主键可以是(column_1, column_2)
,因此您不会丢失c0002
对您的意义。
切勿将供应商和客户(无论“ c”和“ s”是什么意思)放在同一张表中。如果这样做,将没有数据库表,而将有一个平面文件。随之而来的是各种问题和局限性。
就是说,规范化数据。您最终将得到:Person
或Organisation
的一张表包含公共数据(Name, Address
...)Customer
的一张表包含客户特定数据(CreditLimit
...)
一个Supplier
表,其中包含供应商特定的数据(PaymentTerms
...)
没有歧义或可选的列,因此没有Null
使用或SQL函数无限制
。
而且,当您需要添加列时,只需在需要的地方进行操作,而不会影响平面文件的所有其他起诉。影响范围仅限于变更范围。