Welcome to the Periodic Table Database project!
You are started with a periodic_table database that has information about some chemical elements. You can connect to it by entering psql --username=freecodecamp --dbname=periodic_table in the terminal. You may want to get a little familiar with the existing tables, columns, and rows. Read the instructions below and complete user stories to finish the project. Certain tests may not pass until other user stories are complete. Good luck!
Part 1: Fix the database
There are some mistakes in the database that need to be fixed or changed. See the user stories below for what to change.
Part 2: Create your git repository
You need to make a small bash program. The code needs to be version controlled with git, so you will need to turn the suggested folder into a git repository.
Part 3: Create the script
Lastly, you need to make a script that accepts an argument in the form of an atomic number, symbol, or name of an element and outputs some information about the given element.
Notes:
If you leave your virtual machine, your database may not be saved. You can make a dump of it by entering pg_dump -cC --inserts -U freecodecamp periodic_table > periodic_table.sql in a bash terminal (not the psql one). It will save the commands to rebuild your database in periodic_table.sql. The file will be located where the command was entered. If it's anything inside the project folder, the file will be saved in the VM. You can rebuild the database by entering psql -U postgres < periodic_table.sql in a terminal where the .sql file is.
If you are saving your progress on freeCodeCamp.org, after getting all the tests to pass, follow the instructions above to save a dump of your database. Save the periodic_table.sql file, as well as the final version of your element.sh file, in a public repository and submit the URL to it on freeCodeCamp.org.
Complete the tasks below
- You should rename the
weightcolumn toatomic_mass - You should rename the
melting_pointcolumn tomelting_point_celsiusand theboiling_pointcolumn toboiling_point_celsius - Your
melting_point_celsiusandboiling_point_celsiuscolumns should not accept null values - You should add the
UNIQUEconstraint to thesymbolandnamecolumns from theelementstable - Your
symbolandnamecolumns should have theNOT NULLconstraint - You should set the
atomic_numbercolumn from thepropertiestable as a foreign key that references the column of the same name in theelementstable - You should create a
typestable that will store the three types of elements - Your
typestable should have atype_idcolumn that is an integer and the primary key - Your
typestable should have atypecolumn that's aVARCHARand cannot benull. It will store the different types from thetypecolumn in thepropertiestable - You should add three rows to your
typestable whose values are the three different types from thepropertiestable - Your
propertiestable should have atype_idforeign key column that references thetype_idcolumn from thetypestable. It should be anINTwith theNOT NULLconstraint - Each row in your
propertiestable should have atype_idvalue that links to the correct type from thetypestable - You should capitalize the first letter of all the
symbolvalues in theelementstable. Be careful to only capitalize the letter and not change any others - You should remove all the trailing zeros after the decimals from each row of the
atomic_masscolumn. You may need to adjust a data type toDECIMALfor this. Be careful not to change the value - You should add the element with atomic number
9to your database. Its name isFluorine, symbol isF, mass is18.998, melting point is-220, boiling point is-188.1, and it's anonmetal - You should add the element with atomic number
10to your database. Its name isNeon, symbol isNe, mass is20.18, melting point is-248.6, boiling point is-246.1, and it's anonmetal - You should create a
periodic_tablefolder in theprojectfolder and turn it into a git repository withgit init - Your repository should have a
mainbranch with all your commits - Your
periodic_tablerepo should have at least five commits - You should create an
element.shfile in your repo folder for the program I want you to make - Your script (
.sh) file should have executable permissions - If you run
./element.sh, it should outputPlease provide an element as an argument.and finish running. - If you run
./element.sh 1,./element.sh H, or./element.sh Hydrogen, it should outputThe element with atomic number 1 is Hydrogen (H). It's a nonmetal, with a mass of 1.008 amu. Hydrogen has a melting point of -259.1 celsius and a boiling point of -252.9 celsius. - If you run
./element.shscript with another element as input, you should get the same output but with information associated with the given element. - If the argument input to your
element.shscript doesn't exist as anatomic_number,symbol, ornamein the database, the output should beI could not find that element in the database. - The message for the first commit in your repo should be
Initial commit - The rest of the commit messages should start with
fix:,feat:,refactor:,chore:, ortest: - You should delete the non existent element, whose
atomic_numberis1000, from the two tables - Your
propertiestable should not have atypecolumn - You should finish your project while on the
mainbranch. Your working tree should be clean and you should not have any uncommitted changes