What's the best way to store the bible in SQL?

后端 未结 8 622
予麋鹿
予麋鹿 2021-01-31 10:10

What I\'m looking for is a breakdown of table names w/ corresponding fields/types.

The bible I want to store will be in English and needs to support the following:

8条回答
  •  梦毁少年i
    2021-01-31 10:34

    SQL is the BEST way to store this. Considering your requirement we can split them into two major parts

    1. Information that's dependent on individual version

      • Small caps
      • Red letter print
    2. Information that isn't dependent on individual version

      • Book, Chapter, Verse numbers
      • Section title
      • Foot notes (??????)
      • Cross Reference
      • Commentary

    For various reasons I prefer to store the whole bible project into one SINGLE table, Yes call it as bible

    For your visual here is my screen I have stored nearly 15 versions of bible in single table. Luckily the different version names are just kept as column wide. When you add more version in future your table grows horizontally which is okay thus the # of rows remain constant(31102). Also, I will request you to realize the convenience of keeping the combination of ('Book, Chapter, Verse') as the PRIMARY key because in most situations that's the look-up way.

    enter image description here

    That said here is my recommended table structure.

    CREATE TABLE IF NOT EXISTS `bible` (
      `id` int(11) NOT NULL AUTO_INCREMENT, --Global unique number or verse
      `book` varchar(25) NOT NULL,  --Book, chapter, verse is the combined primary key
      `chapter` int(11) NOT NULL, 
      `verse` int(11) NOT NULL,
      `section_title` varchar(250)  NOT NULL, -- Section title, A section starts from this verse and spans across following verses until it finds a non-empty next section_title
      `foot_note` varchar(1000)  NOT NULL,  -- Store foot notes here
      `cross_reference` int(11) NOT NULL, -- Integer/Array of integers, Just store `id`s of related verses 
      `commentary` text  NOT NULL, -- Commentary, Keep adding more columns based on commentaries by difference authors
      `AMP` text  NOT NULL, -- Keep, keep, keep adding columns and good luck with future expansion
      `ASV` text  NOT NULL,
      `BENG` text  NOT NULL,
      `CEV` text  NOT NULL,
      PRIMARY KEY (`book`,`chapter`,`verse`),
      KEY `id` (`id`)
    ) 
    

    Oh, What about the Small caps and Red letters?

    Well, Small caps & Red letters you can store in version columns using HTML or appropriate formats. In the interface you can strip them off based on user's choice whether he requires red letter or small caps.

    For reference, you can download the SQLs from below and customize in your way

    Bibles in SQL format

提交回复
热议问题