问题标签 [data-modeling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 唯一标识符与身份
我注意到 asp_membership 使用 uniqueidentifier,对我来说,这似乎是在浪费空间,因为我想不出一个特殊的理由不将其替换为身份。
但是,SQL Server 不允许我将其更改为 int。它说“连接的数据库服务器不支持从 uniqueidentifier 转换为 int”。在谷歌搜索之后,似乎我必须打破所有关系等,然后手动删除该列并将其重新添加为 int。你们知道更好的方法吗?
我不认为我会处理多个数据库,所以我似乎不需要 uniqueidentifier。你同意吗?
请注意:我正在启动一个新的 Web 应用程序。你还认为解决这个问题会那么难吗?
另外,请注意,我的任何主键都不会成为我的 URL 的一部分。
sql - 这些应该是 3 个 SQL 表还是一个?
由于答案,问题的性质发生了变化,所以我认为发布一个新问题是可以的(?)。
您可以在下面看到我的原始数据库设计。我有 3 个表,现在我需要一个查询来获取特定用户的所有记录以进行 running_balances 计算。
- 交易是在用户之间进行的,就像相互信用一样。所以单位在用户之间交换。
- 清单是带入系统的物理内容;用户为此获得单位。
- 消费是消耗的物质;用户必须为此付费。
(请注意,“金额”的单位不同;这些是根据这些金额进行的条目和计算。超出了解释原因的范围,但这些是字段)。
问题是:“这可以/应该在一个表中还是多个表中(就像我现在拥有的那样)?” 我喜欢 3 表解决方案,因为它在语义上更有意义。但是,对于 running_balances,我需要这样一个复杂的选择语句(可能会产生负面的性能结果)。上面链接中的原始问题要求此声明,这里我问数据库设计是否合适(抱歉四次重复发布,希望没问题)。
sql - 检查我的数据库设计 / PHP/MySQL
我目前正在努力改进我的数据库,以便为增长腾出空间。就目前而言,不同的用户对网站的各个区域具有不同的“权限”。一些用户有权访问网站的多个区域。
如果我以最有效的方式执行此操作,我想要一些反馈:
现在,对于每个“区域”,我都有单独的目录。但是,我想将所有这些目录最小化到一个主目录,然后根据用户的权限将登录的用户重定向到相应的“区域”。
听起来我做得对吗?我从来没有创建过具有不同权限和不同人群的多层网站,因此,我当然愿意更多地了解如何正确地做到这一点。
非常感谢!
php - 使用 MySQL 和 PHP 查找重复内容
我在开发我的网络应用程序时遇到问题,这里是描述:
这个 web 应用程序(仍处于 alpha 阶段)基于用户生成的内容(通常是短文章,尽管它们的长度可能会变得很大,大约占屏幕的四分之一),每个用户至少提交 10 篇这样的文章,所以这个数字应该会增长得很快。从本质上讲,大约 10% 的文章会被重复,所以我需要一个算法来获取它们。
我想出了以下步骤:
- 在提交时获取一段文本并将其存储在一个单独的表中(
article_id
,length ),问题是文章是使用 PHP special_entities() 函数编码的,用户发布的内容稍有修改(有些人会错过逗号、重音或甚至跳过一些单词) - 然后从数据库中检索长度范围 =
new_post_length
+/- 5% 的所有条目(我应该使用另一个阈值,记住文章提交中的人为因素吗?) - 获取前 3 个关键字并将它们与步骤 2 中获取的文章进行比较
- 拥有一个最可能匹配的最终数组,使用 PHP 的 levenstein() 函数比较新条目
此过程必须在文章提交时执行,而不是使用 cron。但是我怀疑它会在服务器上产生沉重的负载。
你能提供任何想法吗?
谢谢!麦克风
sql - 寻找对数据库设计的硬件双重检查
大家好...所以我正在为大学开设数据库设计课程。我有下面的问题,我尝试在这里的图表http://tinypic.com/view.php?pic=httchc&s=3 .. 有人介意看看并提供建议吗?谢谢您的帮助!!
问题:
问题 3 以下情况描述了一家希望实施信息系统的公司。该公司希望跟踪其员工、部门和项目。假设公司的MIS部门做了需求收集和分析阶段,给你一份规格报告,描述如下。
公司分为多个部门,可以有多个地点。每个部门都有一个唯一的名称、一个唯一的编号和一个经理。公司记录每位员工开始管理部门的日期。
每个部门控制多个项目,每个项目都有一个唯一的名称、唯一的编号和一个位置。
公司存储每个员工的姓名、社会保险号、地址、工资、性别和出生日期。每个员工只分配到一个部门,但可以从事多个不一定由同一部门控制的项目。公司跟踪员工每周在每个项目上工作的小时数。公司还跟踪每个员工的直接主管。
出于保险目的,公司还希望跟踪每位员工的家属。该公司希望记录每个受抚养人的名字、性别、出生日期以及与员工的关系。
为这种情况画一个 EER 图。
sql - 对于具有无限子类别的站点,我应该使用哪种数据库结构?
例如,“都乐香蕉”是一种产品,它列在“香蕉”类别下,当我打开“水果”类别时,我想看到“都乐香蕉”。
sql - 使用 char 作为主键/外键是不是?
考虑有一堆表链接到“国家”或“货币”表。
为了使数据更易于阅读,我希望将带有国家代码(例如 US、GB、AU)和货币代码(USD、AUD)的 CHAR 字段作为这两个表中的每一个的主键,并且所有其他表都将使用这个 CHAR 作为一个外键。
数据库是带有innodb引擎的mysql。
它会导致性能问题吗?这是我应该避免的吗?
sql - 我应该使用 nvarchar(max) 代替 nvarchar(64) 列还是作为附加列?
我正在构建一个表来跟踪数据库中特定对象的历史记录。目前我有以下列:
在大多数情况下,每个历史项目都将通过 HistoryTypeId 进行自我解释,因此 HistoryDetails 要么为 Null,要么非常小。但是对于几个历史类型,细节数据会很大。是否可以使用 nvarchar(max) 处理所有记录,或者我应该将它分开并为需要超过 64 个字符的历史类型添加一个额外的列(见下文)?粗略估计,80%-90% 的记录不需要超过 64 个字符的详细信息,表中将有数百万条记录。
sql - 帮助设置数据库
我的站点将提供许多产品,但它们将被分类到完全不同的站点(域)中。
我的问题是,我最好将所有产品集中到一个数据库中并使用 ID 来区分站点,还是应该为每个站点设置一个表和/或数据库?
这是我的想法
独立的数据库
- 更容易从后端读取
- 分类更好
- 使备份更加困难
- 如果我需要对架构进行更改,则需要将其推送到所有数据库
相同的数据库
- 都在一个地方
- 可能会变得笨拙
- 一个数据库将具有巨大的文件大小,查找可能会受到影响
有人可以就哪种方式最好以及为什么给我一些建议吗?
sql - 数据库完整性:触发器与键/约束
我和我的朋友就数据库的设计争论不休。
他认为,为了确保复杂数据库的完整性,最好使用触发器。
我相信为此目的最好使用键(主键、唯一键)和约束。
我认为使用触发器是危险的,因为它们在“幕后”工作,并且很难说执行命令后会发生什么。此外,如果触发器有错误,它可能会破坏数据库的完整性。
你怎么看待这件事?