title: Proper database structure for a datasheet generator
body: <h2>Project</h2>
  
  <p>I am building an automated datasheet generator with the possibility to edit single blocks of the datasheet. There should be always a parent datasheet with the possibility to add translated versions to it. But those translated versions do not have to be the same in content, which means they can have a different amount of pages and blocks.</p>
  
  <p>Basically you type in the article_number and my systems grabs all the default informations like article_number, manufacturer_number, ean_code, primary_image etc. from another database which stores all the product data.</p>
  
  <p>Also every datasheet has a template assigned, which controls the main colors like primary, secondary and text color. Also a logo is assigned to every template.
  But maybe some day there should be a possibility to have a template for pages aswell.</p>
  
  <p>From this point you can start adding pages and blocks to every page etc.</p>
  
  <p>Blocks should be stored as json strings and can have different types, like image, textblock, textblock with image, heading etc. So the fields can be quite different depending on the block type. Also the order of the blocks should be stored somehow. Blocks have their field definitions inside block_config also as a json string.</p>
  
  <p>Finally the datasheet can be exported as a pdf file via TCPDF.</p>
  
  <h2>Basic Scheme</h2>
  
  <p><a href="https://i.stack.imgur.com/yv3he.jpg" rel="nofollow noreferrer">See here for my current scheme</a></p>
  
  <h2>The Problems</h2>
  
  <p>Let me make an example:</p>
  
  <p>I create a datasheet with the <strong>article_number</strong> 12345.
  This sheet contains several pages, and every page contains several blocks.
  This datasheet should be available in german and english (more languages are possible too, like spanish, french etc.).</p>
  
  <p>So the title and the subtitle can be different for every datasheet language.
  But some attributes inside datasheets should be shared accross all languages.
  There should be only one parent object which all translated objects should refer to, so I don't have to copy article 12345 over and over again inside the datasheets table.</p>
  
  <p>Also the blocks can be different for every page and every translation of it.
  So those fields like title and subtitle probably have to go into a separate translation table like datasheet_translations table with a locale column and datasheet_id column?</p>
  
  <p>But do I have to do the same for all blocks and pages or is it fine to add a locale column directly to the pages and blocks?</p>
  
  <p><strong>So the questions are:</strong>
  Is my database scheme any good and how to achieve all those goals above properly?
  How to handle the translations? How to handle the order of the blocks, how to save them etc.?</p>
  
  <p>I am quite unsure and afraid that the project will fail with a bad database structure.</p>
  
  <p>I hope you can guide me into the right direction and I hope my explanation was clear enough. If there is any information missing, please let me know.</p>