【发布时间】:2012-10-08 05:39:54
【问题描述】:
我对关系数据库中的主键有疑问。假设我有以下表格:
盒子
- 身份证
- 盒子名称
盒子物品
- 身份证
- item_name
- belongs_to_box_id(外键)
我们还假设我打算每天存储数百万个项目。我可能会使用 bigint 或 guid 作为 BoxItems.Id。
我在想什么,我需要你的建议,而不是 BoxItems 的 Bigint Id,使用连续的 TinyInt 数字,并且标识每个项目的是 belongs_to_box_id 加上 tinyint 行的组合(例如 item_numner )。
所以现在我们得到的是:
盒子物品
- belongs_to_box_id
- item_sequence_number [TINYINT]
- item_name
例子:
Items.Insert(1,1, "my item 1");
Items.Insert(1,2, "my item 2");
因此,我可以使用 tinyint 并节省大量磁盘空间,而不是使用 bigint 或 GUID。
我想知道这种方法的优缺点。我正在使用 MySQL 和 ASP.NET 4.5 开发我的应用程序
【问题讨论】:
-
你需要解释你想对数据做什么。物理数据结构由应用程序需求驱动。毕竟,如果你想节省大量空间,就不要存储任何东西。
标签: mysql sql primary-key