Questions tagged «database»

该标签用于一般数据库问题。如果您对SQL有疑问,请改用该标记。


17
始终拥有一个自动增量整数主键是一种好习惯吗?
在我的数据库中,我倾向于养成使用自动递增的整数主键的习惯,该主键带有id我制作的每个表的名称,以便对任何特定的行进行唯一的查找。 这是一个坏主意吗?这样做有什么弊端吗?有时我会拥有多个指标喜欢id, profile_id, subscriptions这里id是唯一的标识符,profile_id链接到国外id一的Profile表等 还是在某些情况下您不想添加这样的字段?

12
将大文件(10 MB)存储在数据库中是不好的做法吗?
我当前正在创建一个Web应用程序,允许用户存储和共享1 MB-10 MB的文件。 在我看来,将文件存储在数据库中将大大降低数据库访问速度。 这是一个有效的问题吗?将文件存储在文件系统中并将文件名和路径保存在数据库中是否更好?使用数据库时,是否有与存储文件有关的最佳实践? 我正在该项目的PHP和MySQL中工作,但是对于大多数环境(Ruby on Rails,PHP,.NET)和数据库(MySQL,PostgreSQL)都是相同的问题。


17
您如何将“模糊日期”存储到数据库中?
这是我遇到过几次的问题。假设您有一条要存储到数据库表中的记录。该表具有一个名为“ date_created”的DateTime列。这项特别的记录创建于很久以前,您不确定确切的日期,但知道年份和月份。您只知道年份的其他记录。您知道日,月和年的其他记录。 您不能使用DateTime字段,因为“ 1978年5月”不是有效的日期。如果将其分成多列,则会失去查询能力。有没有其他人遇到过这个问题,如果是这样,您是如何处理的? 为了阐明我正在构建的系统,它是一个跟踪档案的系统。一些内容是很久以前制作的,我们所知道的只是“ 1978年5月”。我可以将其存储为1978年5月1日,但是只能以某种方式表示该日期仅对月份准确。这样,几年后,当我检索该存档时,当日期不匹配时,我不会感到困惑。 对我而言,将“ 1978年5月的未知日期”与“ 1978年5月1日”区分开是很重要的。另外,我也不想将未知数存储为0,例如“ 1978年5月0日”,因为大多数数据库系统都会将其作为无效的日期值来拒绝。


9
数据库应实现多少业务逻辑?
我参与过一些项目,其中大多数业务逻辑是在数据库上实现的(主要是通过存储过程)。另一方面,我从其他程序员那里听说这是一个不好的做法(“那里有数据库来存储数据。其余的则由应用程序来完成”)。 通常,哪种方法更好? 我能想到的在数据库中实现业务逻辑的优点是: 集中业务逻辑; 应用程序类型,编程语言,操作系统等的独立性; 数据库不太容易进行技术移植或大型重构(AFAIK); 无需重新进行应用程序技术迁移(例如:.NET到Java,Perl到Python等)。 缺点: 由于缺乏面向应用程序的语言所提供的库和语言构造,SQL对于业务逻辑编程而言效率较低,并且更为复杂。 通过库更难(如果可能的话)重用代码; 生产效率较低的IDE。 注意:我正在谈论的数据库是关系型,流行的数据库,例如SQL Server,Oracle,MySql等。 谢谢!

3
创建数据库连接-一次还是为每个查询执行一次?
目前,当我的网页首次加载时,我创建了一个数据库连接。然后,我处理页面并针对该连接运行任何查询。这是最好的方法吗?还是应该在每次运行查询时都创建数据库连接? ps对我来说,创建1个连接并使用它更有意义,但我不知道这是否会引起任何其他问题。 我在MSSQL中使用C#(ASP.NET)。
101 c#  database  sql-server 

10
为什么“从表中选择*”被视为不良做法
昨天我正在与“业余”程序员讨论(我自己是专业程序员)。我们遇到了他的一些工作,他说他总是查询数据库中的所有列(即使在生产服务器上/代码中)。 我试图说服他不要这样做,但是还没有那么成功。在我看来,程序员仅应查询“简洁”,效率和流量方面实际需要的内容。我误会我的观点了吗?
96 database  sql  mysql  bad-code 

9
在关系数据库中使用列表可以吗?
我一直在尝试设计一个与项目概念相适应的数据库,并遇到了一个似乎引起激烈争论的问题。我已经阅读了几篇文章和一些Stack Overflow的答案,指出永远(或几乎永远)无法在字段中存储ID或类似内容的列表-所有数据都应该是相关的,等等。 不过,我遇到的问题是我正在尝试创建任务分配器。人们将创建任务,将其分配给多个人,并将其保存到数据库中。 当然,如果我将这些任务分别保存在“人员”中,则必须有几十个虚拟的“任务ID”列并对其进行微管理,因为可以将0到100个任务分配给一个人。 再一次,如果我将任务保存在“任务”表中,则必须有几十个虚拟的“ PersonID”列并对其进行微管理-与以前一样的问题。 对于这样的问题,是否可以保存采用一种形式或另一种形式的ID列表,或者我只是不考虑另一种可以在不违反原则的情况下实现的方式?

3
MariaDB和MySQL有什么区别?
MariaDB和MySQL有什么区别?我对两者都不是很熟悉。我主要是前端开发人员。 它们在语法上是否相似?这两种查询语言在哪里不同? 维基百科只提到许可之间的区别: MariaDB是MySQL数据库的社区开发分支,其推动力是由社区维护其在GPL下的自由状态,而不是由Oracle当前拥有的MySQL许可证状态的任何不确定性。


12
SQL:空字串与NULL值
我知道这个话题有点争议,互联网上有很多各种各样的文章/观点。不幸的是,他们中的大多数人都假设该人不知道NULL和空字符串之间的区别是什么。因此,他们通过联接/聚集讲述令人惊讶的结果的故事,并且通常会做一些更高级的SQL课程。这样,他们绝对会遗漏所有要点,因此对我毫无用处。因此,希望这个问题和所有答案将使话题向前发展。 假设我有一个包含个人信息(姓名,出生等)的表,其中的一列是具有varchar类型的电子邮件地址。我们假设由于某些原因,某些人可能不想提供电子邮件地址。将此类数据(不带电子邮件)插入表时,有两个可用的选择:将单元格设置为NULL或将其设置为空字符串('')。让我们假设我知道选择一个解决方案而不是另一个解决方案的所有技术含义,并且可以为任何一种情况创建正确的SQL查询。问题是,即使两个值在技术层面上都不同,但在逻辑层面上却完全相同。看完NULL和”之后,我得出一个结论:我不知道那个人的电子邮件地址。也不管我怎么努力 我无法使用NULL或空字符串发送电子邮件,因此显然大多数SMTP服务器都同意我的逻辑。所以我倾向于在不知道该值的地方使用NULL,并认为空字符串是一件坏事。 经过与同事的激烈讨论,我提出了两个问题: 我是否假设使用空字符串作为未知值会导致数据库对事实“撒谎”,对吗?更准确地说:使用SQL关于什么是价值和什么不是价值的想法,我可能得出结论:我们拥有电子邮件地址,只是发现它不为空。但是后来,当尝试发送电子邮件时,我会得出一个矛盾的结论:不,我们没有电子邮件地址,@!#$数据库一定在撒谎! 是否有逻辑上的情况,其中空字符串”可以很好地承载重要信息(除了值和没有值),而通过其他任何方式(如附加列)进行存储都会很麻烦/效率低下。我见过很多帖子声称有时将空字符串与实数值和NULL一起使用是很好的,但是到目前为止,还没有看到一种合乎逻辑的方案(就SQL / DB设计而言)。 PS有些人会很想回答,这只是个人品味的问题。我不同意 对我来说,这是一个具有重大后果的设计决策。因此,我希望看到一些出于逻辑和/或技术原因而对此表示反对的答案。
72 design  database  sql  strings  null 

7
Null的姓氏如何在许多数据库中引起问题?
我读了一篇关于英国广播公司的文章。他们说的一个例子是,姓“ Null”的人在某些网站上输入详细信息时遇到问题。 没有给出关于他们面临的错误的解释。 但据我所知,字符串“ Null”和实际的Null值完全不同(从数据库的角度来看)。 为什么这会在数据库中引起问题?
71 database  null 

8
为什么要在数据库中存储一个枚举?
我已经看到了许多类似这样的问题,要求提供有关如何在数据库中存储枚举的建议。但是我不知道你为什么要这么做。假设我们有一个Person带有gender字段和一个Gender枚举的实体。然后,我的人员表具有一列性别。 除了强制正确性的明显原因外,我不明白为什么我会创建一个额外的表gender来映射应用程序中已有的内容。我真的不喜欢重复。
69 database  enum 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.