出于好奇,我问这个问题。基本上我的问题是当你有一个数据库需要一个行条目来拥有像标志一样的东西时,最佳实践是什么?一个很好的例子就是堆栈溢出上的徽章,或者 bugzilla 中的操作系统字段。可以为给定条目设置标志的任何子集。
通常,我从事 C 和 C++ 工作,所以我的直觉 react 是使用无符号整数字段作为一组可以翻转的位...但我知道这不是一个好的解决方案,原因有几个。其中最明显的是可扩展性,我可以拥有多少标志会有一个硬性上限。
我还可以想到其他几个扩展性更好但会出现性能问题的解决方案,因为它们需要多次选择才能获取所有信息。
那么,执行此操作的“正确”方法是什么?
最佳答案
一般来说,我避免使用位掩码字段。它们将来很难阅读,需要对数据有更深入的了解才能理解。
之前已经提出了关系解决方案。鉴于您概述的示例,我将创建如下内容(在 SQL Server 中):
CREATE TABLE Users (
UserId INT IDENTITY(1, 1) PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
EmailAddress VARCHAR(255)
);
CREATE TABLE Badges (
BadgeId INT IDENTITY(1, 1) PRIMARY KEY,
[Name] VARCHAR(50),
[Description] VARCHAR(255)
);
CREATE TABLE UserBadges (
UserId INT REFERENCES Users(UserId),
BadgeId INT REFERENCES Badges(BadgeId)
);
关于sql - 数据库行中的标志,最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/124844/