我有一个表有几个ID列到其他表.
我希望外键只有在我放入数据时才能强制完整性.如果我稍后进行更新以填充该列,那么它还应该检查约束.
(这可能是数据库服务器依赖的,我使用MySQL和InnoDB表类型)
我相信这是一个合理的期望,但如果我错了,请纠正我.
无论我们是否喜欢,很多人(如果不是大多数)开发人员要么经常使用数据库,要么可能有一天必须使用数据库.考虑到野外滥用和滥用的数量,以及每天出现的数据库相关问题的数量,可以说开发人员应该知道某些概念 - 即使他们没有设计或使用数据库今天.所以:
保持清单简短.
每个答案的一个概念是最好的.
要具体.
"数据建模"可能是一项重要技能,但这恰恰意味着什么呢?
解释你的理由.
为什么你的概念很重要?不要只说"使用索引".不要陷入"最佳实践".说服您的观众了解更多信息.
Upvote您同意的答案.
首先阅读其他人的答案.一个排名较高的答案是比两个排名较低的答案更有效的陈述.如果您要添加更多内容,请添加评论或引用原始评论.
不要因为它不适用于你个人而投票.
我们都在不同的领域工作.这里的目标是为数据库新手提供指导,以获得对数据库设计和数据库驱动开发的有充分理解和全面理解,而不是争夺最重要的标题.
我正在使用MSSQL Server 2005.在我的数据库中,我有一个表"customerNames",它有两列"Id"和"Name"和大约.1,000个结果.
我正在创建一个功能,每次我必须随机挑选5个客户.任何人都可以告诉我如何创建一个查询,每次执行查询时将获得随机的5行(Id和Name)?
我看到有些人使用语句来查询MySQL数据库中的表,如下所示:
select * from car_table where 1=1 and value="TOYOTA"
Run Code Online (Sandbox Code Playgroud)
但1=1这里的意思是什么?
我正在从SQLite切换到PostgreSQL,用于典型的Rails应用程序.
问题是PG的运行规格变得缓慢.
在SQLite上花了大约34秒,在PG上它是~76秒,这慢了2倍.
所以现在我想应用一些技术来使规范的性能与SQLite相提并论,而不需要修改代码(理想情况下只需设置连接选项,这可能是不可能的).
从头到尾有几件显而易见的事情是:
你可能已经明白我不关心可靠性和其余的(DB在这里只是一次性的东西).
我需要充分利用PG并尽可能快地完成它.
理想情况下,最佳答案将描述这样做的技巧,设置和这些技巧的弊端.
更新: fsync = off + full_page_writes = off仅将时间减少到~65秒(〜-16秒).良好的开端,但远远没有34的目标.
更新2:我尝试使用RAM磁盘,但性能增益在误差范围内.所以似乎不值得.
更新3:* 我找到了最大的瓶颈,现在我的规格和SQLite一样快.
问题是进行截断的数据库清理.显然SQLite在那里太快了.
为了"修复"它,我在每次测试之前打开一个事务并在结束时回滚它.
约700个测试的一些数字.
SQLite的速度提高了2倍.PG的速度提高4倍.
有没有办法生成一个图表,显示现有表及其与数据库连接的关系?
这适用于SQL Server 2008 Express Edition.
可能重复:
用于比较Sql Server表的免费工具
我想比较两个SQL Server数据库,包括模式(表结构)和表中的数据.什么是最好的工具呢?
我无法理解Range主键在这里 -
它是如何工作的?
"散列属性上的无序散列索引和范围属性上的排序范围索引"是什么意思?
最近有很多关于卡桑德拉的谈话.
Twitter,Digg,Facebook等都使用它.
什么时候有意义:
database ×10
sql ×6
mysql ×2
nosql ×2
sql-server ×2
cassandra ×1
compare ×1
diagram ×1
foreign-keys ×1
hash ×1
performance ×1
postgresql ×1
primary-key ×1
quotes ×1
random ×1
rdbms ×1