我正在爲特許經營者設計一個數據庫。我的技術水平最好(我只是在特許經營者辦公室工作)。該數據庫必須定義商店位置和特許經營商。所以我知道我需要一個「商店」桌子和一個「特許經營者」桌子。 「商店編號」將是商店表中的主要關鍵字。一個加盟商可以擁有多家商店。我想我可以在加盟商表格中指定一個「加盟商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