在数据库表中存储宾果卡号码的最佳方法是什么

时间:2018-11-11 02:37:22

标签: c# sql entity-framework relational-database

我想使用MVC和EF创建一个基于网络的宾果游戏,我想在数据库表中为每张卡存储24个数字作为记录,我不确定如何创建我的宾果卡表,我想到的是用这种方式为每个单元格的数字设计一个具有24个整数字段的表,当我在业务逻辑中获取记录时,我无法遍历数字,因为它们位于单独的字段中(实际上我可以,但是我认为这种方式是不正确的方法)另一种方法是将所有数字连接在一起并用逗号分隔并将其存储为字符串,因此当我获取记录时,我可以拆分逗号字符串并将所有数字放入数组或其他内容中 那么针对这种情况的最佳解决方案是什么? 如何设计用于存储宾果卡号码的表格?

1 个答案:

答案 0 :(得分:0)

好问题!

您是对的,将其存储在24个不同的整数字段中绝对是一个不好的方法。用逗号将它们连接起来似乎是一个合理的折衷方案,但这是不灵活的,因为您将它们视为文本,而不是整数,因此以后,如果您想运行诸如SELECT MAX(CardNumber) FROM BingoCardNumbers WHERE CardID = 1之类的查询,您将无法执行任何操作那个。

我的建议是有两个不同的表BingoCardsBingoCardNumbersBingoCards表中将包含一个CardID以及与该卡相关的其他信息,例如卡的所属者,因此也许您也希望在其中包含一个UserID列。该表中没有存储卡号。

然后,在BingoCardNumbers表中将包含三列CardID,这是第一张表NumberIndex(1-24,即索引)中的主键卡中的数字),最后是CardNumber,即实际的数字本身。然后,如果要获取特定卡的所有编号,只需执行以下操作:

SELECT CardNumber FROM BingoCardNumbers WHERE CardID = 1 ORDER BY NumberIndex