Mysql 不同组和字段用户的数据库结构
有两种类型的客户,即个人客户和公司客户。 例如,他们有相同的字段(电子邮件、密码),但公司客户有唯一的字段(公司名称、公司电话、地址)。 数据库的结构还可能是什么Mysql 不同组和字段用户的数据库结构,mysql,database,structure,Mysql,Database,Structure,有两种类型的客户,即个人客户和公司客户。 例如,他们有相同的字段(电子邮件、密码),但公司客户有唯一的字段(公司名称、公司电话、地址)。 数据库的结构还可能是什么 mysql> desc `customers`; +-------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra |
mysql> desc `customers`;
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| id_customer | int(11) | NO | PRI | NULL | auto_increment |
| email | varchar(32) | NO | | NULL | |
| password | int(16) | NO | | NULL | |
+-------------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
mysql> desc `corporate_customers`;
+-----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| id_customer | int(11) | NO | PRI | NULL | |
| company_name | varchar(32) | NO | | NULL | |
| company_address | text | NO | | NULL | |
+-----------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
你可以更具体地说明你想要完成什么。当然,数据库结构没有问题,但是您没有指定任何内容 如果您试图从两个表中检查哪个id匹配,并选择
公司名称、公司地址
,下面是我所说的方法,但您可以更具体地说明您想要什么
SELECT corporate_customers.company_name ,corporate_customers.company_address FROM corporate_customers WHERE corporate_customers.id_customer = customers.id_customer
这很有效。除此之外,您可能需要在
corporate_customers
表中添加唯一约束
,如下所示:
CONSTRAINT uc_corporate_customers UNIQUE (company_name,company_address)
这将确保客户没有重复的公司名称和公司地址。不,这不是构建表的唯一方法。如果您正在寻找其他建议。你可以考虑一个“人”表,一个“公司”表,一个“客户”表和两个多对多表,称为“PuffixCube”和“PosiySuffCube”。
该示例为您提供了不同的Customer对象,以及不同的person和company对象。我在您的示例中看到的问题是,在两个不同的表中,您将“id_customer”作为主键。我会认为这是坏的形式。如何构建表取决于您,但我认为这有一个问题。不确定您所说的“可用于下一个db结构”是什么意思。我的意思是,这是解决此问题的唯一方法吗?我在id上有主键_customer@uint
作为主键,它总是(必须)唯一的
。上述限制将阻止两个公司客户拥有相同的公司名称和地址。但两个不同的客户如何拥有两个相同的公司名称和地址?@uint如果您/用户尝试/尝试插入此类数据会怎么样?我只是想分享我对你的结构的反馈。创建数据结构是为了满足需要,并尽可能保护数据。如果您是说,公司客户将具有唯一的公司名称、公司地址..
,则应添加一个唯一的约束,以便您不能插入具有重复详细信息的记录。但您不是在说为什么这是一个不好的表单?这对我来说会很有趣,因为我在不同的情况下使用相同的结构。如果你问我,它只是让人困惑。当某人需要按id_customer查找客户时,他们如何知道要查看哪个表?该ID可能存在于客户中,也可能存在于公司客户中。或者,想象一下这个“约翰·多伊”的id_顾客:1。然后,“百事公司”id_客户:1。当id_customer:X可以代表两条记录中的一条时,您会失去一点完整性。谢谢您的评论,我会注意到这一点
"PERSON"
person_ID, PK
email
password
"Company"
company_id, PK
company_name
company_address
"Customer"
id_customer, PK
"person_customer"
person_ID, FK
id_customer, FK
"company_customer"
company_id, FK
id_customer, FK