gpt4 book ai didi

java - 使用带有 JAVA/RDBMS 堆栈的 JSON 客户端时的规范化与反规范化

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:56 26 4
gpt4 key购买 nike

我有一个与 JAVA/MySQL 堆栈接口(interface)的 Angular JS JSON 客户端。由于 MySQL 是一个 RDBMS,我所有的数据都被规范化了(当然是前三种形式)。

我的问题可以用下面的例子来说明。

服务器返回了一个 Example 对象和一个 User 对象。

Example - [{
userId:1,
...
...
..
},
{
userId:2,
...},
{
userId:3,
...}];

User - [
{
userId - 1,
firstName - "John",
lastName - "Doe",
..
},
{
userId - 2,
firstName - "Jane",
lastName - "Doe",
..
}, {...}...
]

当我使用 Angular“example_entry in example”查看 Example 集合并显示 Example 集合元素时,我只有 userId 可用。但是如果我想显示名字和姓氏,我不能这样做,因为它在不同的“用户”集合中。我必须编写一个辅助 Angular Controller /服务方法来从 User 集合中获取 firstName、lastName 并将其与 Example 集合对象绑定(bind)。

为了避免这个问题,我可以对 Java Ojbects 进行反规范化,并像这样发送准备好使用 JSON..

Example - [{
userId:1,
firstName - "John",
lastName - "Doe",
...
...
..
},
{
userId - 2,
firstName - "Jane",
lastName - "Doe",
...},
{
userId:3,
...}];

但这好/坏/可怕吗?因为现在我的 Java 域对象在示例对象和用户对象中都有 firstName、LastName 重复。关于哪条路线更好,有什么建议吗?

De-Normalize and have ready to use JSON
Keep Data Normalized to avoid duplication and write converter methods on the Client as needed

最佳答案

当您将数据发送到您的 UI 层时,您应该对数据进行非规范化。

如果您的数据在数据库中,那么这是存放规范化数据的好地方。使用对 View 进行规范化和查询抽象化的 View 。该 View 允许您将表连接在一起以从数据库中获取非规范化数据。

在 UI 层中,您希望拥有清晰、简单的显示 - 这正是 Angular 最能发挥作用的时候。除非您在屏幕上显示大量数据或通过网络发送大量数据,否则直接从数据库发送非规范化记录会好得多。数据库非常擅长执行连接和其他数据查询功能——它就是为此而构建的。 Javascript 可以做到这一点,但这并不是它的最佳用途。

关于java - 使用带有 JAVA/RDBMS 堆栈的 JSON 客户端时的规范化与反规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18940377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com