数据库设计:成员表是单独的还是全部在一张表中?

2024-01-12

我想创建一个包含个人信息和登录详细信息的朋友表。

将members表分成2个表更好, 一个包含最少的细节, 其次是其他细节。

还是留在一张桌子上?

我有很多包含成员外键的表。


这在很大程度上取决于那些“其他”细节是什么。这是一个常见且有趣的问题,乍一看并没有“一成不变”的答案。但是,如果我们更抽象地思考这个问题,关于您想要表示的任何特定事物的属性(“细节”)之间的实际关系,我们可能会发现一些清晰的情况。

在您的问题中,您指出朋友拥有“最少”和“其他”详细信息。我们不是将这些细节分类为“最小”或“其他”,而是根据任何个人(“原子”)细节是否可以完全由朋友的独特之处来确定。

我认为有一些主键(PK),比如 FriendID 或电子邮件地址之类的。考虑到这一唯一标识符,问问自己:“如果我得到了一个 FriendID(或电子邮件或您用作 PK 的任何内容),我绝对确定该朋友的哪些详细信息?例如,给定 FriendID=2112,我绝对确定该朋友的哪些详细信息?知道那个朋友的名字、姓氏和出生日期,但我do not绝对知道那个朋友的电话号码,因为不止一个。

将您明确知道的 PK 的所有详细信息分组到一张表中。将需要更多数据的详细信息(例如电话号码的“家庭”或“工作”)放入“子”表中,并通过外键返回到 PK 上的“父”表。 (注意:子表的 PK 很可能是复合的;即由父表的 PK 和区分因素(如本例中的“家庭”或“工作”)组成。多方的复合键1-M 关系非常好。)

数据库极客称这种分解为基于函数依赖.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库设计:成员表是单独的还是全部在一张表中? 的相关文章

  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 同一配置文件上的两个不同提供程序

    我在用着实体框架 6 1 0 I have 2 家提供者 MysqlClient 和 SQLServerCE 我需要创建2个不同的DBContext 这迫使我创造2个配置类因为mysql有一些不同的东西 但是当我初始化应用程序时 Datab
  • 一次从多个表中删除行

    我正在尝试将 2 个查询合并为一个这样的查询 result db gt query DELETE FROM menu WHERE name new or die db gt error result db gt query DELETE F
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤
  • MySQL:计算日期/时间之间的差异 - 仅在周一至周五“工作周”期间

    我需要计算开始日期 时间和结束日期 时间之间的差异 但是 我只想在 5 天的工作周内执行此操作 不包括周六 周日 做这个的最好方式是什么 我的想法是 从日期开始 我必须获取星期几 如果是工作日 那么我将添加到累加器中 如果不是 那么我不会添
  • 海量记录的bulk_create最佳实践

    I use bulk create将 1 mio 记录插入到新表中 需要 80 秒 Django 只使用一个 CPU 核心 大约 25 CPU 但没有一个核心达到 100 我相信有改进的潜力 这是代码 class Stock models
  • 在 C# 中,当有人插入、删除或修改记录时,如何从 MySQL 获取事件?

    我正在 WPF Net 中开发一个程序 我需要知道何时有人对数据库的任何表进行更改 这个想法是在数据库发生更改时从数据库接收一个事件 我读了很多文章 但找不到解决我的问题的方法 亲切的问候 最好的解决方案是使用消息队列 在您的应用程序向数据
  • 如何在mysql中选择具有相同值集的列?

    我的桌子是 patients pid name city disease did dname has disease did pid 我想列出具有相同疾病组的患者 pid 和 did 分别是患者和疾病表中的主键 并且是 has diseas
  • 不允许在 php 中连接到此 MariaDB 服务器

    我尝试在 php 中连接远程服务器数据库 但出现以下错误 Host xx xxx xx xx is not allowed to connect to this MariaDB server in 我的连接代码是这样的 servername
  • 如何优化这个MySQL慢(非常慢)查询?

    我有一个 2 GB 的 mysql 表 包含 500k 行 我在没有负载的系统上运行以下查询 select from mytable where name in n1 n2 n3 n4 bunch more order by salary
  • 用于捕获审计跟踪的数据库设计的想法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 如何维护数据库中的数据日志 我必须维护对每一行所做的每次更改的日志 这意味着我不能允许DELETE and UPDATE待执行 我怎样才能保留这
  • MySQL 和 Hibernate 之间的主键自增由谁负责?

    MySQL CREATE TABLE role id role INT 11 unsigned NOT NULL AUTO INCREMENT PRIMARY KEY id role AUTO INCREMENT 1 休眠 Entity p
  • 优化我的表现

    我正在开发一个使用 Zend Framework 1 11 Doctrine 2 一些 Symfony 2 组件以及其他工具和库的项目 我正在尝试使用 Xdebug 和 Webgrind 优化性能 我已经发现了一些瓶颈 例如解析 Ini 配
  • 如何解决“布局有超过 80 个视图,对性能不利”?

    我正在做一个有点复杂的布局 只是我无法修复 LINT 指示的错误 黑莓浏览次数超过 80 对性能不利 这是布局
  • PHP MYSQL文件内容转义问题

    我正在尝试使用 php 将 pdf 文件上传到 mysql 数据库中 除了文件内容之外 一切都很好 无论我如何尝试转义特殊字符 查询总是失败 主要是 未知命令 n 我使用过addslashes mysql real escape strin
  • libmysqlclient.a 和 libmysqlclient_r.a 有什么区别?

    我应该使用哪个来链接 mysqlclient 库 它们之间有什么区别 我似乎找不到答案 谢谢 较新版本的 MySQL 客户端发行版不包含 r 版本 有些可能有从 libmyqslclient r a 到 libmyqslclient a 的
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • 慢速自动增量重置

    我有很多表 由于某些原因 我需要在应用程序启动时调整这些表的自动增量值 我尝试这样做 mysql gt select max id from item max id 97972232 1 row in set 0 05 sec mysql
  • 快速查询最新记录的方法?

    我有一张这样的表 USER PLAN START DATE END DATE 1 A 20110101 NULL 1 B 20100101 20101231 2 A 20100101 20100505 在某种程度上 如果END DATE i
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE

随机推荐

  • 如何设置占位符文本的填充

    我正在使用输入标签并在其中设置了占位符值 现在 我想为其中的占位符文本设置填充 但我不能 这是我尝试过的 HTML
  • 如何使用 Javascript 将内容写入另一个浏览器窗口?

    我已经使用 window open 打开了一个新窗口 并且我想使用 window open 调用中的引用将内容写入新窗口 我尝试使用 myWindow document body innerHTML oldWindowDiv innerHT
  • JSON-LD 中的多个上下文

    如何访问 JSON LD 中的两个单独的词汇 我可以使用 2 个 contexts 吗 例如 context vocab http schema org first name givenName last name familyName c
  • 通过 yum install openssl11 将 CentOS 7 升级到 OpenSSL 1.1.1

    我使用 Centos 7 和 OpenSSL 1 0 2k openssl 1 0 2k 19 el7 x86 64 rpm 我尝试通过以下方式升级到 OpenSSL 1 1 1c yum install openssl11 基本上安装 o
  • 如何在多个 C# 调用中使用临时表

    我有一个 C 应用程序 使用 ADO Net 连接到 MSSQL 我需要创建表 具有动态数量的列 然后插入许多记录 然后从表中执行选择操作 每个步骤都必须是单独的 C 调用 尽管我可以在此期间保持连接 事务打开 问题是 Temp 表仅存在于
  • Android - 获取资源编号值时没有已知的包

    我最近更新了我的 android sdk 突然当我尝试构建我的 android 应用程序时 该应用程序出现在我的设备上 但没有采用应用程序图标 并且名称是包名称而不是应用程序名称 然后崩溃马上 在 logcat 中 生成了下图 有没有其他人
  • 如何检查目录是否是厨师中的符号链接

    我只想删除不是 symlnik 的目录 directory var www html do action delete only if end 所选答案不适用于 Windows 或 Bash 为默认解释器的系统 您应该使用跨平台的 Ruby
  • 使用自定义公式函数/自动化脚本的 Maximo 公式?

    在 Maximo 7 6 1 1 中 我想创建一个使用自定义公式函数 自动化脚本的属性公式 我尝试按照以下步骤执行此操作 但不幸的是 当我尝试在 WO Tracking 中使用它时出现错误 BMXAA3761E The event has
  • 在 Visual Studio Code 中使用奇异容器作为 python 解释器

    我通过 VScode 远程 ssh 连接到 HPC 环境 并希望直接在 VScode 中运行 python 代码以进行测试 我想将 python 解释器设置为一个在执行时运行 python 的奇点容器 这是通过在容器的 def 文件中添加以
  • 如何替换 UITableViewCell 中的 imageView?

    我有一个继承自 UIImageView 的类型 但添加了一些额外的功能 我想将它作为图像视图放入我的 UITableViewCells 中 但不想做一个全新的单元格布局 以便我可以添加此图像 当我尝试直接设置图像视图时 self image
  • 如何继承父级到两个具有相同字段的视图控制器? [复制]

    这个问题在这里已经有答案了 我在情节提要上有 2 个 viewController 每个都有UITextField同名 我有一个父类 它保存的属性名称UITextField 父类继承泛型UIViewController班级 每个 我的 vi
  • 谓词缓存

    是否有 Prolog 实现或库可以缓存谓词 或者您会使用assertz 1 和retract 1 来实现一个例如FIFO 缓存 如下所示 dynamic cache 1 ccall G cache G ccall G cache G cal
  • JavaScript/PHP 注册电子邮件确认工作流程的安全注意事项

    我正在为我的 JavaScript PHP 网站构建用户注册工作流程 用户注册后 他们就会被添加到数据库中 处于非活动状态 然后 用户将收到一封确认电子邮件 这需要他们单击确认链接 目前 确认链接会将用户重定向到站点登录页面 并以确认码作为
  • Android N Preview 模拟器崩溃

    我在新的 Android N 预览模拟器上一开始就遇到了这个崩溃 qemu fatal goldfish tty read Bad offset 20 RAX 0000000000000009 RBX 0000000000000000 RC
  • Java UTF-8 奇怪的行为

    我正在尝试用 Java 解码一些 UTF 8 字符串 这些字符串包含一些组合 unicode 字符 例如 CC 88 组合分音符 根据 字符顺序似乎没问题http www fileformat info info unicode char
  • Java Swing:清除 JPanel 中与 JLayeredPane 中的其他 JPanel 重叠的自定义绘制

    我有一个包含三个 JPanel 的 JLayeredPane 其中两个重叠 我正在向其绘制形状 重叠的两个 JPanel 之一需要清除绘制到其上的每个形状 而不影响绘制到其下方的 JPanel 的形状从屏幕上消失 目前我正在使用这样的东西
  • 将 Opencv Hsv 转换为等价于 Matlab Hsv

    我必须使用opencv开发android代码 代码相当于MATLAB 因为我必须读取图像并将其转换为 HSV 我已经使用以下方法完成了此操作 Imgproc cvtColor temp hsv Imgproc COLOR RGB2HSV 当
  • 如何在 log4j2 属性中设置类的日志级别

    在 log4j 中 我可以在属性文件中指定一个类以在调试级别进行日志记录 如下所示 log4j logger com mycompany mypackage ClassName DEBUG 我如何在 log4j2 中执行此操作 注意我仍然需
  • 角材质内的 routerLink

    a a
  • 数据库设计:成员表是单独的还是全部在一张表中?

    我想创建一个包含个人信息和登录详细信息的朋友表 将members表分成2个表更好 一个包含最少的细节 其次是其他细节 还是留在一张桌子上 我有很多包含成员外键的表 这在很大程度上取决于那些 其他 细节是什么 这是一个常见且有趣的问题 乍一看