sql - 数据库行中的标志,最佳实践

标签 sql database flags

出于好奇,我问这个问题。基本上我的问题是当你有一个数据库需要一个行条目来拥有像标志一样的东西时,最佳实践是什么?一个很好的例子就是堆栈溢出上的徽章,或者 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/

相关文章:

sql - 如何在 PIG 中完整外连接表和总结

mysql - Sql 查询分组和限制

php 代码突然停止工作。奇怪的行为?

c# - 检查是否仅在枚举中设置了这些标志

Android,Intent.FLAG_ACTIVITY_CLEAR_TOP 好像不行?

sql - 在 Oracle 中,如何从相关表中选择多个值并将它们存储在单个列中?

database - 非法请求错误,同时使用 IP :PORT on other computer 连接 vtiger crm

sql - 如何从 SQL 查询中快速获得结果

php - 如何将数据从 HTML 表单保存到 WordPress 中的数据库表?

linux - 带和不带 -p 标志的 Nmap,如何选择端口?