有人问我,如果我们有一个抽象类Animal和两个继承自Animal的类Horse和Donkey,数据库会是什么样子(基本上有多少个表)。我需要三张桌子还是只需要两张?我有什么选择?
发布于 2018-10-14 09:42:53
可以让它变得非常简单:
Table: animal (id, name, etc.)
例如。
animal (1, horse, etc.)
当您需要多个表时,应该是当您有多个属性时
Table: animal (id, name, movement_type, diet_type)
Table: movement_type (id, type)
Table: diet_type (id, type)
例如。
movement_type (1, Quadruped)
movement_type (2, Biped)
diet_type (1, Herbivore)
diet_type (2, Omnivore)
animal (1, Horse, 1, 1)
animal (2, Human, 2, 2)
为重复的数据构建表是很好的。使用这种类型的结构,您的数据将更加准确。
此外,要进入OOP一步,您需要一个用于一头驴和一匹马的类,以及该类的两个单独的实例化。
例如。
Animal horse = new Equidae("Seabiscuit", "tranquil", "sport");
Animal donkey = new Equidae("Fred", "ambitious", "work");
如果两个对象具有不同的行为,则必须使用不同的类。驴和马是马科的一部分,它们的行为是相同的。组成它们的属性是不同的,但行为是相同的。
另一方面,最重要的是你的程序可以工作,你的数据库可以存储数据。这些都是很常见的做法,但“给金鱼剥皮的方法有上百万种”。
我希望这有助于回答你的问题。
https://stackoverflow.com/questions/52798334
复制相似问题