我正在为特许经营者设计一个数据库。我的技术水平最好(我只是在特许经营者办公室工作)。该数据库必须定义商店位置和特许经营商。所以我知道我需要一个“商店”桌子和一个“特许经营者”桌子。 “商店编号”将是商店表中的主要关键字。一个加盟商可以拥有多家商店。我想我可以在加盟商表格中指定一个“加盟商ID”作为主要关键字,以便让加盟商加盟店面。这是我的问题:每家商店可以由多达4家加盟商拥有。所以我被困在如何定义所有这些。我不确定我可以做多个加盟商的ID,即使我可以,经常只有1或2人拥有的商店。这意味着许多空白字段。另外,当我需要查询时,我不确定它将如何聚集在一起。任何建议最合乎逻辑的方式来做到这一点?定义表格/主键
定义表格/主键
回答
好的,所以对于商店来说,你已经有了一个有效的主键 - StoreNumber。所以,你“商店”表会像
Store StoreNumber INTEGER PRIMARY KEY
StoreName STRING
......
然后你有另一台加盟商将举行加盟商和他们的信息 - 主键将是FranchiseeID
Franchisee FranchiseeID INTEGER PRIMARY KEY
FranchiseeName STRING
(other fields)
要加入这两个,因为你可以比单一的业主多,您需要一个店主的表,这样的事情:
StoreOwner StoreNumber INTEGER FOREIGN KEY to "Store"
FranchiseeID INTEGER FOREIGN KEY to "Franchisee"
这两个领域的结合(StoreNumber, FranchiseeID)
将是你的StoreOwner中的主键。
这样,您可以拥有给定商店的任意数量的所有者。
您需要一个连接表,创建一个名为franchisee_store并带有2个id字段的表,其中1个将是商店的ID,另一个将是特许经营商的ID。
here是一个很好的例子。
你需要的是一个多对多的连接表。这是以第三范式完成此操作的正确方法。
例子:
franchisees:
farnchisee_id
other stuff
stores:
store_id
other stuff
franchisee_stores:
frachisee_id
store_id
这是从来没有向一般属性阵列添加到表中,因为可以用加入表更好地处理一个好主意。正如您已经指出的,在您的商店表中有四家加盟商会浪费空间,而这些商店的空间会更少,更重要的是,这会限制任意拥有商店的加盟商的数量。
我想知道如果任何人有任何想法如何在Jet/ACE数据存储中执行“每店4加盟店”规则。当然,A2010增加了新的表级数据宏,它们可以像触发器一样工作,允许您为连接表定义一个数据宏,以强制执行该业务规则。
但是在A2010之前,没有引擎级别的方法来执行此操作 - 您必须将某些逻辑放在应用程序本身中。
我在想这样做的一种方法是将第三列添加到您的连接表,这是一个特许经营人编号。作为PK的一部分,它将是必需的,并且如果你把一个验证规则就像“1和4之间”一样。这不会自动增加,所以你必须在代码中处理它,但它会阻止添加不符合规则的记录。
有没有人有任何其他方法来解决这部分问题的建议?我很想听听有没有办法用缺少触发器和多记录表级约束的表进行建模。尽管如此,它必须在Jet/ACE中工作才能在这里生存。
- 1. 对MySQL表定义百通主键
- 2. 访问自定义主键
- 3. 自定义主键Laravel + Apiato
- 4. 没有主键的表格
- 5. 如果表格无意义,我应该使用主键ID吗?
- 6. SQL:应该在哪里定义主键
- 7. MySQL自定义主键生成器
- 8. Django中的自定义主键问题
- 9. 主键定义CREATE TABLE语句
- 10. 结合值来定义主键?
- 11. 自定义UUID作为主键
- 12. 自定义MySQL中的主键
- 13. 使用复合主键查询表格
- 14. .net mvc3没有主键的mysql表格
- 15. PDO表格只添加到主键
- 16. 如何使用vba创建表格时指定主键
- 17. 如何使用SQLAlchemy定义没有主键的表?
- 18. 定义表复合主键卡桑德拉
- 19. 如何列出SQL Server用户定义表类型的主键?
- 20. 如何同步自定义ID列与表的主键列
- 21. 如何删除主键?我得到不正确的表定义
- 22. Django如何在表单有效后设置自定义主键
- 23. 警告错误6002:表/视图没有定义主键
- 24. [MySQL]:表格视图或实际表格。 (跟踪主键)
- 25. 如何使用自定义名称在sequelize-cli中定义自定义主键
- 26. 自定义键盘退格按钮
- 27. 在主体框架中将主键定义为虚拟
- 28. 基于表格的自定义主题行
- 29. 流利的API,定义主键为外键
- 30. 实体框架定义主键外键到另一个实体
由于@Joelio声明你需要什么被称为连接/连接表。您实际上拥有的是商店和特许经营之间的多对多关系。 4个特许经营商的限制是你需要在另一个层面处理的事情。 – David 2010-01-08 19:19:47