mysql - 链接表和 substring_index 的命名约定

标签 mysql indexing substring naming

我有一个名为 my_contacts 的数据库,由诸如 f_name、l_name、位置、兴趣、寻求、性别、状态等项目组成。这是一个学校项目,我刚刚学习 mysql。我创建了表格来分割项目,例如由 m 和 f 组成的性别表;因为会有多对一的关系,我分开的其他关系是寻求、兴趣、地位(已婚、离婚等)、兴趣和寻求( friend 、新工作等)。

我非常清楚我的 pks 需要是什么(我在 ea 表中创建了一个 pk,其命名约定为 id_gender、id_status、id_seeking 等。

我不清楚的是如何命名我的链接表(如果我理解正确的话,它将保存它们链接的两个表中的外键,是否有任何命名约定或建议?我想到了类似“contacts_link_gender”的东西, “contacts_link_status”等。

还有一个关于使用 mysql 的很好的教程“创建一个新的 eer 模型”,我正在使用 murach 最新的 mysql 书,但是虽然一本好书,但他们往往为刚刚学习的人留下了很多东西,教学是向我们展示了他的内容,但他的内容很简短,而且很切中要害,我不是程序员,也从来不想成为程序员,但它是该学位的最后一个类。

哦还有一件事,当我使用兴趣或寻求等字段并使用 substring_index 将它们拆分时,我在某些字段(interest_1,interest_2)中受到了欺骗,并且我不知道如何修复它,我会在底部包含我的子字符串代码 再次提前致谢! 欢迎任何建议

SELECT  distinct id, 
        first_name, 
        last_name,
        substring_index(location, ' ', 2) as city,
        substring_index(location, ' ',-1) as state,
        substring_index(interests, ' ', 1) as interest_1,
        substring_index(interests, ' ', -1) as interest_2,
        substring_index(seeking, ' ', 3) as seeking_1,
        substring_index(seeking, ' ', -3) as seeking_2
FROM my_contacts…..

最佳答案

为单独的数据创建单独的字段。不要仅仅因为将东西堆放在一个字段中。

这个例子违反了很多规则,Zero, One or Infinite Rule和大多数database normalization rules特别是,所以我认为如果这就是建议的良好数据库设计,那么阅读这本书弊大于利。

对于 MySQL 和一般 SQL 的学术方法,您可能需要了解更多有关如何组织数据的理论,然后通过学习相关的 MySQL 语句来学习应用它们。 CREATE TABLEINSERT INTOSELECT FROM 是这里的基础知识。

Martin Fowler此时对您来说可能有点太紧张了,但是您可以通过示例学习正确的标准化技术。你可以尝试找到一些references on the subject .

更好的方法可能是将您的架构发布到 the code review site并获得有关您的特定设计的反馈。

关于mysql - 链接表和 substring_index 的命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19649594/

相关文章:

mysql - 为什么 Index 只在强制使用时使用,默认不使用?

objective-c - 在 NSString 对象中查找子字符串

bash - 从具有从给定位置到特殊字符的模式位置的文件中提取 bash 中的子字符串

mysql - 从不规则格式的字符串中间返回数字

mysql - 重置 MySql 数据库中的数据

C#:MySQL 异常未处理

ruby - 如何找到在另一个字符串中指定索引之前出现的字符串的第一个索引?

database - 更新表后如何重建索引?

mysql - 聚合函数有

php - 尝试根据用户输入使用 ajax 和 php 在两个日期之间加载数据