- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
假设我的数据库跟踪鸟类目击事件(注意:为了示例,我真的在挖桶底)。
字段是:
sighting_id | common_name | park_name | location | time | etc....
尽管我假设公园始终位于同一位置,但该网站就像一个电子表格。用户为每个条目输入 park_name
和 location
。另请注意,我的实际架构还有其他字段也依赖于类似的“公园名称”(例如州)。
我没有办法让用户预先定义公园,所以我无法提前知道它们。我什至应该尝试动态规范化这些数据吗?例如,我的程序是否应该自动填充 parks
表,将观鸟表中的 park_name 和 location 列替换为 park_id
?
我主要担心性能。列出每一个目击事件都需要一个连接来填充公园和位置。此外,动态管理这几乎肯定需要比节省更多的资源。我可能需要一个 Cron 作业来消除孤立的公园,因为它们可能会在多次目击中被引用。
最佳答案
这在一定程度上取决于您的使用情况。规范化方法(park 是一个表)将使以下查询更容易:
但是,是的,您确实遇到了一些棘手的问题。 “如果公园 XYZ 不存在,则将其插入公园表”的模式存在您必须处理的竞争条件。
现在,这里有一些反对规范化的论点怎么样......大多数客户数据库可能将我的街道地址存储为“123 Foo Street”,而没有动态规范化街道名称(我们可以有一个街道表并将“Foo Street”放在那里, 然后从其他表中引用它。为什么我要提出这个,好表明即使那些讨厌任何重复数据的人也可能承认有一些你不一定要跨越的界线。
另一个愚蠢的例子是我们可能共享姓氏。我们真的需要一个唯一的姓氏表,然后是其他表的外键吗?这可能对某些应用程序有用,但对于 99% 的应用程序来说,这太过分了。这只是更多的工作和更少的性能,几乎没有收获。
所以我会考虑如何能够从表中查询数据。老实说,在这种情况下,我可能会为公园做一张单独的 table 。但在其他情况下,我选择不这样做。
那是我的两分钱,税后一分钱。
关于mysql - 动态规范化一个表是否可行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6318752/
对于我的一个项目,我终于需要使用我的第一个多态类(std::cout 除外)。 我正在研究如何确保至少在某些情况下我有 100% 的去虚拟化调用。 这段代码是否合法可行? dynamic_cast 有
最近有一个编译问题,用这个片段说明: struct Base { }; template struct A : Base { A(){} A(Base&&) {} }; A foo()
注意:这是一个冗长的问题,需要对 MVVM“设计模式”、JSON 和 jQuery 有很好的理解.... 所以我有一个理论/主张 DHTML 中的 MVVM 是可能的 和可行的 并且想知道您是否同意/
我有一台 Mac 服务器,我正在构建 PHP 代码以允许用户上传图像、文档甚至视频文件。研究这个肯定让我很紧张,我希望上传的内容没有病毒。 自己构建一些东西会是一个巨大的挑战吗?您会这样做,还是会
根据文档,ASP.NET 项目(尚)不支持新的 PackageReference https://learn.microsoft.com/en-us/nuget/consume-packages/pa
我是一名优秀的程序员,十分优秀!