if the database sits on a server and is accessed by multiple users, it
should be split into a "backend" db (tables only), and a "frontend" db (all
other objects, and links to the BE tables). each user should have a copy of
the FE db on his/her hard drive, and you (as the developer) should keep a
"master" copy of the FE db that you will modify as needed, and then
redistribute copies of the modified db to the users. you can add a password
to the BE db *before* setting the table links in the FE master db. that way
the linked tables will work, but the users can't open the BE db to modify
the tables' design. if you want to stop users from modifying the forms,
reports, etc in their own copy of the FE db, you can make a .mde file from
the master FE db and distribute the .mde file to your users. a .mde file
only protects forms, reports, and modules, so the queries (and the macros, i
believe) are still vulnerable.
probably the best way to fully protect both the FE and BE databases is by
implementing Access User Security. but that's not a trivial task; you'll
need to read up on it thoroughly and practice implementation on a copy of
your database before doing it "for real".
hth