【发布时间】:2021-09-23 12:40:47
【问题描述】:
我有一个看起来像这样的 MongoDB:
Batteries
[
{ _id, voltage, capacity, energy, width, length, height, weight },
{..}
]
Machines
[
{ _id, manufacturer, category, model, voltage, capacity, energy, height, length, width, weight},
{..}
]
Mongo 需要转换为关系数据库。现在我为此想到的 SQL 是两种设计之一: (抱歉我如何显示我的关系,嵌入这个 html 似乎是最简单的,同时保持准确性)
图片:Same image as code snipped below
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]-->
<!DOCTYPE html>
<html>
<head>
<title>machinesDB</title>
<meta charset="utf-8"/>
</head>
<body><div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="{"highlight":"#0000ff","nav":true,"resize":true,"toolbar":"zoom layers lightbox","edit":"_blank","xml":"<mxfile host=\"Electron\" modified=\"2021-07-14T13:53:08.993Z\" agent=\"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.6.13 Chrome/89.0.4389.128 Electron/12.0.7 Safari/537.36\" etag=\"cA6h_UUTGux3id1gnRLh\" version=\"14.6.13\" type=\"device\"><diagram id=\"k_p20E35Nkjj3HATSdYj\" name=\"Page-1\">7V1dc9soFP01edwdAZItPcaO2+42mWSazGz3qUMsYmsqC69Maru/fpGNLAuIrTgCuSkzmUlAlw/dwxHowlEu0HC2+pjj+fSGxiS9gF68ukBXFxACL+zxX0XOepsTeiJjkiexMKoy7pOfpCwpcp+TmCxqhozSlCXzeuaYZhkZs1oeznO6rJs90bTe6hxPiJJxP8apmvtPErOpuAvYr/I/kWQyLVsGvWh7ZYZLY3EniymO6XIvC40u0DCnlG3/mq2GJC2cV/plW+7DC1d3HctJxpoU+P7tbxKMPz2i29Xl6L+7x88+wH+IWn7g9Fnc8O3oRvSXrUsnLJbJLMUZTw2eaMbuxRWPp8fTJI2v8Zo+F51YMDz+XqYGU5onP7k9TvklwDP45ZwJjGGvqC1J0yFNac4zMrppoCp0X1QmmsnJghe7K28WSFk3eFUzvMYLVnaQpimeL5LHTZeLgjOcT5JsQBmjM2Gk+rJ0DMkZWe1lCd9+JHRGWL7mJuXVyN8WEQPdF8llNWqAL4bCdH/EeMIQi5E62VVdgcn/EHi+AluoYMvNZWj53bENMjn9TiQoNOjgNJlkPJmSp6JY4Z6Ek+VSZDM6Lyqb43GSTa43Nld+lfNF3HaRRXnZp3RDiGkSxyQrwKMMM/y4G1xzmmRs45ZgwH+494ben8FFwDs+5GlQpflPYZ6zIc34veBkgyPhw2BJiqGgQfggH47DLmCGvWYwl3ato4wUlDM8Iw7nlnEOYMc4+yqbZ5PnPHVIt4x0P+wY6UBBenj5MPp4++Wv0b2bmluYmqHXcG4uh0LrEPfc1PxqIgeNYT+XqbnvpmYbOHc+NYcKzje3V6Nr97A+5WEdBPWHNfA18zHUvUgFpvCN3NP61SwOG+N+4Gmtg9kYi8uIk3tcmwVa97i2C7Qa9KJk9s1xunWoda9SdqFWY2BjzBzU7UMNdO9UdrFWI2GPDmsjWCOva6zVaNjg8uFh5EIkJ6665RAJgg1DJLDnmcJYjYM5Lh+NdvqNkT+XKAlQg2E/aMqKfVkHdstgdx4qAWpMbIwLf7O1Q7tttDvfyQBqZIxkJJ84rFvHWrv+tgu2Gibb9sVh3TbWuvW3VayhGitLSTZxYBsAO+h6gQbVeJlo14HdNthh1ws0qEbMlg5sM29eXtfrM6iGzBY0xbnDunWsUdfLM6iGzO4+vwT0lM2qqNfrMB9z15Fcg/qM41c0M1hOE0buOdZFm8sczzeYPmcxiS/aC2hJ28h91f9a95uKZkE1mvU7uR8i1LH/1SjTe/Z/AKRTFJpYgF3/q4Gf9+x/efyjoOPnD1IX8Yr3SRZfFpIZnhp94W59oDc4W9fxqHuKxBNS7qfwaXVKJzTD6ajKHXAX5uuvpXmR+LdI8PlYJK9W+xev1rtU/CEpbnGT2my91PpWZu4ZkVXCvopuFn/vNcRTVTtFYn0M6gV9zsfk0IDe2vE+TMjBtYKosHDVwZGTkxSz5AepdUM3DkTRu2LZU4041JMYL+tKtnckSlWjSalIfnRAJJ2C3d6yUhGHB6/3zMSy7MUO+7DeTogOdks2hyiSSLHtQEWRnW/fwBp10eRY8xbWBE1ZA+2wxpdYsxtlb2ZNzwxrkHyW3T9MG8W+F1igjTrZO9q8hTagMW+QpdmmXx9Wgd8WbyKporZ4I3UY9Y7wpi/3C5jnTeTkuO0twEENv17QcM/EnB43UkOr7kDLsVBb1Bz5cznQEjlJrh2kOz/NEqmvB06Uawbrzs+yRE6W2/IUjXr9+hTddPPT4BTthLknkPnXU+ZGTpprB+nup2j1CKITe5nBuvspWj2B6ITYp28hRtL0XK52jwqxkalNLOCp5w4dk48yOWoM/flosdVImJugTUDdvRrbU8NiTqNrBuzu9dieE+naAvsMFNmeGh9zMt02ZbohbLirYVCm6zmd7gkniHfU+HWCJsBzSl17cHceOQGe0+paxLvz6AnwnFrXGtpnINf1nF7XGtqdC3aB5ut2TrFrCu7OJbtA8407p9k1BXfnol2g+c6dU+2aeg/rXLYLNJ+6c7pdQ2h3LtwFmo/dvWvpXDl37Y4FqYsnq9I5oPkS3XsGAMH6xm8fdA7AbybeDSQANB9jtAzA763eDTXiAbsAaD64pLjfKaoqrI8rqrzGkirPkqbKB3XaAy+SxlNjUZX0AAmBGVGV3OMwiA72S7EHFkRVQPOVG0vcscKBUyl6OnfKU9INqAPtUAf1pRkzjNphTj80w5wAyVM8ONwv2T60IOMFmo+mnAVzdm0o/LHPBdiQC+VBZNNUKIWq1bFNqYqmVEB+vaJ+YIYKCOo7/GK/JPt+v6bkNUUFdbfkEBXKcyYVB14cYkcHxN6iM9AsOsu8t64+vDoK8lq26bAJvSMVvTBsjiPFk9V/S96aV/9zGo3+Bw==</diagram></mxfile>"}"></div>
<script type="text/javascript" src="https://viewer.diagrams.net/js/viewer-static.min.js"></script>
</body>
</html>
我是使用 SQL 数据库的新手,我知道我可能在这里做错了。我倾向于底部设计(我们称之为 Design2)并将我的模型类在 .Net C# 中编写为:
public class Manufacturer
{
public int ID { get; set; }
public string Name { get; set; }
public string ImgURL { get; set; }
public List<Categories> Categories { get; set; }
}
public class Categories
{
public int ID { get; set; }
public string Name { get; set; }
public int ManufacturerID { get; set; }
public List<Manufacturer> Manufacturer { get; set; }
public Models Model { get; set; }
}
public class Models
{
public int ID { get; set; }
public string Name { get; set; }
public int CategoryID { get; set; }
public int BatteryID { get; set; }
public List<Categories> Categories { get; set; }
public List<Batteries> Batteries { get; set; }
}
public class Batteries
{
public int ID { get; set; }
public float Voltage { get; set; }
public float Capacity { get; set; }
public float Energy { get; set; }
public float Width { get; set; }
public float Length { get; set; }
public float Height { get; set; }
public float Weight { get; set; }
public bool Solar { get; set; }
public Models Model { get; set; }
}
我是否了解如何成功设计关系,数据库是 3NF 吗?
先感谢您!我在执行此操作时使用的资源是:
【问题讨论】:
-
我会使用 Mysqlsh 中的 JSON 导入实用程序来加载 bson 数据,然后使用生成的列来提取所需的 JSON key.values