- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我必须创建一个数据库结构。我有一个关于外键和良好实践的问题:
我有一个表,该表必须有一个字段,该字段可以是两个不同的字符串值,“A”或“B”。它不能是其他任何东西(因此,我不能使用字符串类型字段)。
设计这张表的最佳方式是什么:
1) 创建一个 int 字段,它是另一个表的外键,只有两条记录,一条用于字符串“A”,一条用于字符串“B”
2) 创建一个 int 字段,然后在我的应用程序中创建一个这样的枚举
public enum StringAllowedValues
{
A = 1,
B
}
3) ???
预先感谢您的宝贵时间。
编辑:13 分钟后,我收到了所有这些很棒的反馈。感谢大家的想法和见解。
最佳答案
许多数据库引擎支持枚举作为一种数据类型。事实上,在某些情况下枚举是正确的设计解决方案。
然而...
有两个要求可以决定单独表的外键更好。
第一个是:可能需要增加该列中有效选项的数量。在大多数情况下,您希望在没有软件部署的情况下执行此操作;枚举是“内置”的,因此在这种情况下,可以向其中写入新数据的表效率更高。
第二个是:应用程序需要推理此列中的值,其方式可能超出“A”或“B”。例如,“A”可能比“B”更大/更旧/更贵,或者您想要向最终用户展示 A 的某些其他属性,或者 A 是某些内容的简写。
在这种情况下,最好将其显式建模为表中的列,而不是将这些知识融入您的查询中。
在 30 年的数据库工作中,我个人从未发现枚举是正确决定的案例....
关于c# - SQL 良好实践和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40468767/
嗨,我正在考虑开发一种文件传输程序,想知道我是否想要尽可能好的加密,我应该使用什么? 我会用 C# 开发它,所以我可以访问 .net 库 :P在我的 usb 上有一个证书来访问服务器是没有问题的,如果
我创建的这个计算两个数组的交集是线性的方法的复杂度(在良好、平均、最差的情况下)? O(n) public void getInt(int[] a,int[] b){ int i=0; int
我已经能够使用 RTCPeerConnection.getStats() API 获得 WebRTC 音频调用的各种统计信息(抖动、RTT、丢包等)。 我需要将整体通话质量评为优秀、良好、一般或差。
基本问题: 如果我正在讲述/修改数据,我应该通过索引硬编码索引访问文件的元素,即 targetFile.getElement(5);通过硬编码标识符(内部翻译成索引),即 target.getElem
在 Linux 上,我想知道要调用什么“C”API 来获取每个 CPU 的统计信息。 我知道并且可以从我的应用程序中读取 /proc/loadavg,但这是系统范围的负载平均值,而不是每个 CPU 的
在客户端浏览器中使用 fetch api,GET 或 POST 没有问题,但 fetch 和 DELETE 有问题。它似乎将 DELETE 请求方法更改为 OPTIONS。 大多数研究表明是一个cor
我是一名优秀的程序员,十分优秀!