我有一個包含兩個表的數據庫; List和ListItem。這些表格具有一對多的關係。但是一個要求是允許與給定列表相關的ListItems被排序。除了在ListItem表中有一個「排序順序」字段,對此有什麼好的方法?DB架構:維護項目訂單
1
A
回答
0
如果您被要求提供排序或序列字段以外的方法,那麼CreatedAt字段如何?有時單獨的排序順序表(ListItemSortOrder)很有用。
2
我看到三個選擇:
排序字段列表中的項目表。通常最好的選擇:簡單,做你需要的。如果它是你想要的,可以自動填充一個時間戳。
包含排序信息的單獨表格。如果有任意數量的訂單需要維護,則很有用
下一個/上一列:這是大多數情況下的惡夢,但實際上可能是有用的,如果您有大量列表項並需要插入中間很多。
1
如果你的表的特定於域的意思是真正的通用的「列表」和「列表項」,那麼你可以做的最好的是提供一個通用的「排序」一欄。
但是,如果您的表格在業務領域具有更具體的含義,那麼您希望排序順序列在該域中具有更多含義。一個例子是訂單和LineItem的表,其中排序列將LineItemNumber:
CREATE TABLE [Orders](
[ID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY
)
GO
CREATE TABLE [LineItems](
[ID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[OrderID] [int] NOT NULL,
[LineItemNumber] [int] NOT NULL,
CONSTRAINT [UC_LineItems] UNIQUE NONCLUSTERED
(
[OrderID] ASC,
[LineItemNumber] ASC
)
)
GO
ALTER TABLE [LineItems] WITH CHECK ADD CONSTRAINT [FK_LineItems_Orders]
FOREIGN KEY([OrderID])
REFERENCES [Orders] ([ID])
GO
ALTER TABLE [LineItems] CHECK CONSTRAINT [FK_LineItems_Orders]
GO
注意,我添加了一個給定的順序不能有相同的LineItemNumber兩個行項目的特定於域的約束。在列表/列表項的情況下,這個約束是不必要的。
相關問題
- 1. 架構:維護訂單歷史
- 2. Tensorflow:批量維護訂單
- 3. BCP維護插入訂單
- 4. 維護ListView項目狀態
- 5. 使用Git維護項目
- 6. RabbitMQ:維護訂戶的「目錄」
- 7. 在R中維護原始訂單
- 8. Parallel.Foreach維護收集訂單嗎?
- 9. 如何維護訂單優先級
- 10. 在Tkinter堆疊訂單維護
- 11. DownloadStringAsync維護訂單的多個URL
- 12. 維護訂單的鍵/值集合
- 13. 通過搜索維護訂單
- 14. 本地維護資源庫目錄結構大項目
- 15. 維護所選項目從項目的實體框架(代碼優先)一colelction
- 16. Mongo Db架構
- 17. Firebase db架構
- 18. Sphinxsearch維護sql的訂購
- 19. Jenkins項目訂單
- 20. Flex項目架構?
- 21. IdentityServer4項目架構
- 22. .NET項目架構
- 23. Zend項目架構
- 24. Java項目架構
- 25. UNIX,如何維護目錄結構?
- 26. 限價訂單簿:維護買入/賣出定單列表的數據結構
- 27. 訂購模塊構建訂單IntelliJ for Maven項目
- 28. 維護單位
- 29. 大項目中的資源(resx)維護
- 30. 維護類似的Android項目
這與asp.net-mvc無關 – 2009-07-05 13:54:37