mysql - Assets 管理数据库设计

标签 mysql database-design gwt asset-management

我目前正忙于实现一个基本的 Assets 管理系统。它不会很复杂。只是用它的名称、序列号、零件号和类型等来跟踪任何 Assets 的东西。然而,我遇到的问题是,我也想合并书籍。不幸的是,书籍的结构与普通 Assets (例如标题、作者、isbn 代码等)非常不同。

我希望社区能提供一些他们认为最好的设计的见解。将书籍合并到 Assets 管理中(如果是这样,数据库设计应该如何设计),或者我应该简单地编写一个完全独立的、独立的图书馆模块(可能具有将书籍导出到 Assets 管理系统的某些功能 [具有更少/其他字段) ]).

谢谢!

编辑: 其他可能的做法是使捕获屏幕动态化,以便用户可以指定字段和值。然后可以将其作为 XML 存储在数据库中。但他不会是我首选的方式。

编辑 2: 我忘了说,我非常受我可能使用的技术的约束。它们是 MySQL、GWT、Hibernate 和 Spring(没有 Spring 事务)。

最佳答案

一种方法是使用文档样式的非 SQL 数据库(例如 Mongo)来存储 Assets 。这样,每种不同类型的 Assets 都可以轻松拥有自己的一组字段,而无需额外的表格等。

基本上我所描绘的是类似于以下的伪代码:

class Asset
{
    int AssetNumber;
    int AssetType;
    string Description;
    // etc.
}
class BookAsset : Asset
{
    // book-specific fields
}
class ElectronicsAsset : Asset
{
    // electronics-specific fields
}
// etc.

所以额外的 Assets 类型可以只是额外的派生类。然后,每个 Assets 将作为其自己独特的文档写入文档数据库,并通过其 Assets 编号(或根据其包含的字段等进行搜索)或名称或存储方式进行检索。

这将为您提供一个快速简便的系统,并在您跟踪其他 Assets 或有关现有 Assets 的其他信息时提供您可能需要的灵 active 。

根据您的编辑进行编辑:用户定义的字段应该可以正常工作。您可以将其设置为对象上的某种键/值字典,或者如果使用更动态的语言,甚至可以将字段添加到对象本身。 “基本 Assets ”将由绝对必需的字段组成,其余的可以更松散地定义、有条件地需要、用户指定等。

关于mysql - Assets 管理数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4417511/

相关文章:

mysql - 数据显示在服务器响应上,但不显示在浏览器上 - MySQL Node.js

javascript - 使倒数计时器抵抗页面刷新

mysql - 我无法弄清楚我在进行此 MYSQL 查询时犯了什么错误

SQL Server - 前缀和零填充 ID 列

gwt - 我希望我的 CheckboxCell 控制每一行的选定状态

mysql - sql 请求在选择单个结果或多个结果时出现问题

php - 开始我的第一个项目?

mysql - 用户 Activity 提要的表结构 - 关系与否?

gwt - Vaadin - 总是需要 GWT 依赖?

gwt - dart脚本可以调用GWT的RemoteServiceServlet吗