想象一个带有一组复选框的web表单(可以选择其中任何一个或所有复选框)。我选择将它们保存在一个以逗号分隔的值列表中,这些值存储在数据库表的一列中。

现在,我知道正确的解决方案是创建第二个表并正确地规范化数据库。它可以更快地实现简单的解决方案,并且我希望快速地对该应用程序进行概念验证,而不必在其上花费太多时间。

我认为在我的情况下,节省的时间和更简单的代码是值得的,这是一个合理的设计选择吗,还是我应该从一开始就将其规范化?

更详细地说,这是一个小型的内部应用程序,本质上是替换存储在共享文件夹中的Excel文件。我问这个问题也是因为我正在考虑清理程序并使其更易于维护。书中有些东西我不是很满意,其中之一就是这个问题的主题。

我有一个应用程序,在几乎所有的表中使用GUID作为主键,我读到使用GUID作为主键时存在性能问题。老实说,我还没有看到任何问题,但我要开始一个新的应用程序,我仍然想使用GUID为主键,但我在考虑使用一个复合主键(GUID和可能另一个字段)。

我之所以使用GUID,是因为当你有不同的环境,如“生产”、“测试”和“开发”数据库时,它们很好且易于管理,而且还用于在数据库之间迁移数据。

我将使用实体框架4.3,我想在应用程序代码中分配Guid,然后将其插入数据库。(例如,我不想让SQL生成Guid)。

为了避免与此方法相关的性能损失,创建基于gui的主键的最佳实践是什么?

请记住,我将在lat / long对上执行计算,什么数据类型最适合与MySQL数据库一起使用?

应用程序开发人员常见的数据库开发错误有哪些?

我正在评估什么可能是最好的迁移选项。

目前,我使用的是一个分片MySQL(水平分区),我的大部分数据存储在JSON blobs中。我没有任何复杂的SQL查询(已经迁移了,因为我分区了我的db)。

现在,似乎MongoDB和Cassandra都是可能的选择。我的情况:

在每个查询中都有大量的读取,较少的常规写入 不担心“大规模”的可伸缩性 更关心简单的设置、维护和代码 最小化硬件/服务器成本

我遇到过许多NoSQL数据库和SQL数据库。有不同的参数来衡量这些数据库的强弱,可伸缩性就是其中之一。横向和纵向缩放这些数据库有什么区别?

我还不能完全理解这些差异。你能描述这两个概念并使用真实世界的例子吗?

每当我设计数据库时,我总是想知道是否有一种最好的方法来命名数据库中的项目。我经常问自己以下问题:

表名应该是复数吗? 列名应该是单数吗? 我应该为表或列添加前缀吗? 我应该在命名项目时使用大小写吗?

是否有推荐的指导原则来命名数据库中的项?