【问题标题】:Design table with similar columns/attributes具有相似列/属性的设计表
【发布时间】:2015-05-28 17:48:17
【问题描述】:

我有 2 个表格,比如说 product_with_refund_form 和 product_without_refund_form。在表 1 中,我有这些字段:

  • 姓名
  • transaction_number
  • 状态
  • 金额
  • 收银员

在第二张桌子上我有:

  • 姓名
  • 金额
  • po_number

我的问题是,你如何设计桌子?我是为它们创建每个表还是创建一个包含所有相似字段的表,product_with_refund_form 的另一个表具有唯一的字段,然后 product_without_refund_form 的另一个表。

【问题讨论】:

  • po_number 起什么作用?
  • 把它想象成一个系统生成的随机数。

标签: mysql database-design relational-database


【解决方案1】:

与其尝试使用两个相似的表,不如将两者合并到一个表中。

注意:

  • 添加了主键“ID”以唯一标识每一行及其 自动递增值。
  • “isRefund”被用作一个标志来告诉 两种形式的区别。这个值可以是任何一个 字符例如“y”或“n”。
  • 由于要求未提及外部“收银员”表,因此我将此列保留为 varchar 字段。

Product_Transactions - 字段名称

id, name, transaction_number, status, amount, cashier, DateCreated, po_number, isRefund

表创建代码

CREATE TABLE Product_Transactions (`id` int AUTO_INCREMENT, `name` varchar(100), `status` varchar(10), 'amount' DECIMAL(10,2), 'cashier' varchar(100), 'DateCreated' TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 'po_number' varchar(100), 'isRefund' varchar(1), PRIMARY KEY (id))
;

【讨论】:

  • 合并它们的问题是,字段仍然不是最终的,可能会更多,如果发生这种情况,我将有很多空字段。
  • 使用视图可以缓解这种情况。你只会看到你想看到的值 :)
  • 由于字段尚未最终确定,您可能会设计不足/过度设计数据库。我希望到目前为止提供的信息能让您了解数据库表的位置。
  • 确实,视图将处理列/字段的可见性,但我只是对空列值感到不舒服。我正在研究表继承,但我不确定这是否是最好的主意。
  • 这两个表及其对应表单之间的关系尚不清楚。这需要指定,以便我们更好地了解幕后发生的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 2011-01-18
  • 1970-01-01
  • 2021-04-19
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
相关资源
最近更新 更多