Database design 如何在SQL server中将堆栈或队列用作数据类型或在列中使用它

Database design 如何在SQL server中将堆栈或队列用作数据类型或在列中使用它,database-design,data-modeling,sql-server-2016,Database Design,Data Modeling,Sql Server 2016,我创建了一个表 tbl_order (orderID(pk) ,orderedItems , date , customerID(Fk)) 及 我想在orderedItems列中存储食物ID 举例 tbl_Order (orderID=1 , orderedItems(stack(1,4,5,7)), .... ) 1 ROW in tbl_Order 是否可以在SQL server中执行此操作 这是可能的,但这个想法太糟糕了,你需要一个新单词来表示“坏”。我推荐这样一种方法: Cust

我创建了一个表

tbl_order 
(orderID(pk) ,orderedItems , date , customerID(Fk))

我想在orderedItems列中存储食物ID

举例

tbl_Order

(orderID=1 , orderedItems(stack(1,4,5,7)), .... ) 1 ROW in tbl_Order

是否可以在SQL server中执行此操作

这是可能的,但这个想法太糟糕了,你需要一个新单词来表示“坏”。我推荐这样一种方法:

Customer
    ID
    Name
    etc.

Food
    ID
    Name
    Description
    etc.

Order
    ID
    Date
    CustomerID

OrderItem
    ID
    OrderID
    FoodID
注意:在每个表中,“ID”是主键,“table nameID”是“table name”的外键

“队列”和“堆栈”行为出现在前端代码中——像这样的概念在RDBMS中几乎没有一席之地


如果您有任何问题,请告诉我。

可以吗?对你应该吗?不。不要在数据引擎中存储分隔项。有更好的方法吗。。。我认为它减少了@larnu之间的关系如果我不这样做的话,我应该再添加两个表@larnu还有一件事要记住,@saeedarefard-SQL Server是基于集合的,而不是基于行的,因此它不适合队列、堆栈或其他RBAR结构/技术。在这种情况下,为什么要创建队列或堆栈*(RBAR-一行一行)1列或100列,这无关紧要;这不是正确的答案。如果您想在之后以分隔格式使用数据,那没关系,但不要以这种方式存储数据。每次使用分隔列表时,拥有两个具有适当规范化关系的额外表是正确的答案。谢谢大家…我将使用规范化表
Customer
    ID
    Name
    etc.

Food
    ID
    Name
    Description
    etc.

Order
    ID
    Date
    CustomerID

OrderItem
    ID
    OrderID
    FoodID