Open file solution.txt
To follow my terminal command. Solutions divided into several steps :
1. Compact sql db schema into periodic_table.sql.
2. Prepare git directory.
3. Prepare shell scipt files.
4. Copy scipts and run the scripts (fix db first)
Documentation can be found on :https://github.com/viktoriussuwandi/Periodic-Table-Database
This is the result to complete the Periodic Table Database project. Instructions for building this project can be found at https://www.freecodecamp.org/learn/relational-database/build-a-periodic-table-database-project/build-a-periodic-table-database
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. In your script, you can create a PSQL variable for querying the database like this: PSQL="psql --username=freecodecamp --dbname=<database_name> -t --no-align -c"
, add more flags if you need to.
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.
- Rename the
weight
column toatomic_mass
. - Rename the
melting_point
column tomelting_point_celsius
and theboiling_point
column toboiling_point_celsius
. melting_point_celsius
andboiling_point_celsius
columns should not acceptnull
values.- Add the
UNIQUE
constraint to thesymbol
andname
columns from the elements table. symbol
andname
columns should have theNOT NULL
constraint.- Set the
atomic_number
column from theproperties
table as aforeign key
that references the column of the same name in theelements
table. - Create a
types
table that will store the three types ofelements
. types
table should have atype_id
column that is aninteger
and theprimary key
.types
table should have atype
column that's aVARCHAR
and cannot benull
. It will store the different types from the type column in theproperties
table.- Add three rows to your
types
table whose values are the three differenttypes
from theproperties
table. properties
table should have atype_id
foreign key
column that references thetype_id
column from thetypes
table. It should be anINT
with theNOT NULL
constraint.- Each row in
properties
table should have atype_id
value that links to the correcttype
from thetypes
table. - Capitalize the
first letter
of all thesymbol
values in theelements
table. Be careful to only capitalize theletter
and not change any others. - Remove all the
trailing zeros
after thedecimals
from each row of theatomic_mass
column. You may need to adjust a data type toDECIMAL
for this. The final values they should be are in theatomic_mass.txt
file. - You should add the
element
withatomic number
9 to your database. Itsname
is Fluorine,symbol
is F,mass
is 18.998,melting point
is -220,boiling point
is -188.1, and it's anonmetal
. - Add the element with
atomic number
10 to your database. Itsname
is Neon,symbol
is Ne,mass
is 20.18,melting point
is -248.6,boiling point
is -246.1, and it's anonmetal
. - Create a
periodic_table
folder in theproject
folder and turn it into agit
repository withgit init
. - Your
repository
should have amain
branch with all your commits. periodic_table
repo should have at leastfive commits
.- Create an
element.sh
file in your repo folder for each program. script (.sh)
file should have executable permissions.- If user run
./element.sh
, it should output onlyPlease provide an element as an argument
. and finish running. - If user run
./element.sh 1
,./element.sh H
, or./element.sh Hydrogen
, it should output onlyThe 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 user run
./element.sh
script withanother element
as input, it should get thesame output
but with informationassociated
with thegiven element
. - If the argument input to
element.sh
script doesn't exist as anatomic_number
,symbol
, orname
in the database, the only output should beI could not find that element in the database
. - The message for the
first commit
in the repo should beInitial commit
. - The rest of the commit messages should start with
fix:
,feat:
,refactor:
,chore:
, ortest:
. - Delete the
non existent element
, whoseatomic_number
is 1000, from thetwo tables
. properties
table should not have atype
column.- Finish the project while on the
main branch
. Theworking tree
should beclean
and it should not have anyuncommitted changes
.